#pragma once

#include "glog/logging.h"

void test_glog_1(char* argv0)
{
    /**
    google::InitGoogleLogging(argv[0]);            // 使用glog之前必须先初始化库，仅需执行一次，括号内为程序名
    google::ShutdownGoogleLogging();               // 当要结束glog时必须关闭库，否则会内存溢出
    */

    // glog初始化
    google::InitGoogleLogging(argv0);

    /*
    FLAGS_logtostderr = false;            //是否将日志输出到stderr，而非文件
    FLAGS_alsologtostderr = false;            //日志记录到文件的同时输出到stderr
    FLAGS_colourlogtostderr = flase;            //是否将彩色日志输出到stderr
    FLAGS_drop_log_memory = true;            //日志写到文件的时候删除其在内存中的buf
    FLAGS_log_prefix = true;            //每行log加前缀，其格式为Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
    FLAGS_minloglevel = google::INFO;            //日志最低记录等级
    FLAGS_logbuflevel = google::INFO;            //缓存日志的最低等级 , -1表示不缓存,0表示只缓存google::INFO
    FLAGS_logbufsecs = 30;            //日志最多缓存的秒数，0表示实时输出
    FLAGS_log_dir = "";            //设置日志文件输出目录
    FLAGS_max_log_size = 1800;            //最大日志大小（MB）, 如果设置为0将默认为1
    FLAGS_stop_logging_if_full_disk = false;            //磁盘满停止记录日志
    */

   /**
    google::SetStderrLogging(google::INFO);            //设置级别高于 google::INFO 的日志同时输出到屏幕
    google::SetLogDestination(google::INFO, "./logfiles/INFO/INFO_");            //设置 google::INFO级别的日志存储路径和文件名前缀，同样可以对WARNING，ERROR，FATAL级别进行设置
    google::SetLogFilenameExtension("Qt_");            //设置文件名扩展
    */ 

   /**
    //只有当num_cookies > 10条件成立时，“Got lots of cookies”日志信息才被记录。
    LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";  

    //每隔10次记录一次日志信息（第1、11、21……次被执行的时候，记录日志信息）。
    LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie";            
    
    //size>1024的条件连续成立10次的时候记录日志信息。
    LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " <<google::COUNTER<< "th big cookie";

    //当该语句只在首次执行了20次以后记录日志信息。            
    LOG_FIRST_N(INFO, 20) << "Got the " <<google::COUNTER<< "th cookie";
    google::COUNTER表示该语句执行的次数。
    */ 
    // FLAGS_log_dir = "/tmp/logs/"; 
    
    FLAGS_logtostderr = 0;      // 仅仅将日志打印到终端
    // FLAGS_alsologtostderr = 1;  // 将日志打印到终端并保存到日志中

    LOG(INFO)<<"output info log";
    LOG(WARNING)<<"output warning log";
    LOG(ERROR)<<"out error log";
    // LOG(FATAL)<<"out fatal log";
}
